系列走到第 29 天,回顧前面幾篇的架構圖:反向代理、media server、BI 平台、監控管線,幾乎每一個方塊的背後都是開源專案。得來速 Vision AI 是高度垂直的題目,但把系統拆開來看,Berry AI 真正自己寫的是演算法與商業邏輯,其餘每一層都建立在開源軟體之上。
本篇盤點我們用了哪些開源軟體、分別用在哪裡,以及我們回饋了什麼。先說結論:用得很多,回饋得少。
每一間店的 edge server,從作業系統到應用層都由開源軟體組成:
這張清單並不完整。每一項的相依套件再往下展開還有好幾層,這裡只列出各層最主要的元件。
GitHub 的星星數是最先看到的指標,卻幾乎不影響我們的決策。回顧系列裡的幾次選型,真正影響結論的是這三件事:
這三項指向同一個問題:這個專案能維持多久,以及出問題時我們有沒有能力自己修。
我們的貢獻集中在一種模式上:在正式環境遇到問題,查出原因、修正、驗證,再送回上游。以我自己送出的 PR (pull request) 為例:
Seek 之後回傳的位置不正確,會導致呼叫端從錯誤的位置讀取資料。= 的 SetEnv,修正後我們的自動化工具才能處理所有實際存在的設定檔。這些都談不上大功能,但每一筆都先在我們的環境裡驗證過才送出去:問題是真的,修法是有效的。對上游來說,一筆附上原因分析與修法的 PR 比一個 issue 有用得多;對我們來說,改動進了上游,之後升級就不需要維護本地的 patch。
有些改動與自身需求綁得太緊,上游沒有理由合併,只能自己維護 fork (複製一份自行維護的 repo):
開源最好的地方是它不問你是誰,我們可以站在這些巨人的肩膀上面做產品,也可以在某個深夜查出一個 bug 之後,把修正推送回去,為社群貢獻一份心力。這個系列寫下來的每一套系統,都是許多我們素未謀面的人一起建立起來的,他們把自己創意開源出來,讓更多人可以一同分享、回饋、貢獻,萬分感謝!
本系列由 Berry AI 工程團隊出品。更多工程實戰紀錄都在 Berry AI 技術部落格。